home *** CD-ROM | disk | FTP | other *** search
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- sound_playMusic("music/rybky14.ogg")
- local pokus = getRestartCount()
-
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- room.zvednout = 0
- room.uvod = random(42) + 14
- room.ahojkrabe = 0
- room.pobliz = 0
- room.nesahat = 0
- room.bud = 0
- room.rozhovor = 0
- room.veselit = 0
-
- return function()
- if no_dialog() and isReady(small) and isReady(big) then
- if room.zvednout == 0 and dist(big, valec) <= 1 and big.dir == dir_no and random(6) == 1 and valec.Y > 14 then
- room.zvednout = 1
- addv(4, "re-v-ocel")
- elseif room.uvod <= 0 then
- local bit_spi = {}
- if krab.spi == 0 then
- switch(random(10)){
- [1] = function()
- bit_spi[0] = true
- bit_spi[2] = true
- end,
- [2] = function()
- bit_spi[0] = true
- bit_spi[2] = true
- end,
- [3] = function()
- bit_spi[1] = true
- bit_spi[3] = true
- end,
- [4] = function()
- bit_spi[1] = true
- bit_spi[3] = true
- end,
- [5] = function()
- bit_spi[4] = true
- bit_spi[5] = true
- end,
- [6] = function()
- bit_spi[0] = true
- bit_spi[2] = true
- end,
- [7] = function()
- bit_spi[1] = true
- bit_spi[3] = true
- end,
- [8] = function()
- bit_spi[0] = true
- bit_spi[4] = true
- end,
- [9] = function()
- bit_spi[1] = true
- bit_spi[2] = true
- end,
- [0] = function()
- bit_spi[4] = true
- end,
- }
- end
- if bit_spi[0] then
- addv(3 + random(9), "re-v-koraly0")
- end
- if bit_spi[1] then
- addv(3 + random(9), "re-v-koraly1")
- end
- if bit_spi[2] then
- addm(3 + random(9), "re-m-libi0")
- end
- if bit_spi[3] then
- addm(3 + random(9), "re-m-libi1")
- end
- if bit_spi[4] then
- addm(3 + random(9), "re-m-libi2")
- end
- if bit_spi[5] then
- addv(3 + random(9), "re-v-pokoj")
- end
- room.uvod = 800 + random(300) + random(400)
- elseif room.ahojkrabe == 0 and dist(small, krab) <= 1 and random(20) == 1 then
- room.ahojkrabe = 1
- addm(1, "re-m-ahoj")
- elseif krab.spi == 0 and room.pobliz > 20 then
- krab.spi = 1
- elseif room.bud == 0 and room.pobliz > random(800) then
- room.bud = 1
- krab:planDialog(2, "re-k-budi")
- if room.ahojkrabe == 0 and random(2) == 1 then
- room.ahojkrabe = 1
- addm(5, "re-m-ahoj")
- end
- elseif krab.dopad >= 1 and krab.dopad <= 10 then
- krab.dopad = 1000
- krab:planDialog(0, "re-k-au")
- elseif room.nesahat == 0 and (krab.dir == dir_left or krab.dir == dir_right) then
- room.nesahat = 1
- if odd(game_getCycles()) then
- room.bud = 1
- end
- krab:planDialog(0, "re-k-nesahej")
- elseif room.pobliz == random(500) + 30 then
- if odd(room.pobliz) then
- krab:planDialog(5, "re-k-spim")
- else
- krab:planDialog(5, "re-k-otravujete")
- end
- elseif room.rozhovor == 0 and room.pobliz > 1 and random(333) == 1 then
- room.rozhovor = 1
- addm(7, "re-m-uzitecny"..random(2))
- if odd(game_getCycles()) then
- addv(7, "re-v-obejit")
- else
- addv(6, "re-v-nech")
- addv(3, "re-v-nervozni")
- end
- elseif room.veselit == 0 and krab.spi > 0 and random(2000 + 100 * pokus) <= room.bud * 2 + room.nesahat * 2 + room.ahojkrabe + room.rozhovor then
- room.veselit = 1
- addm(10, "re-m-rozveselit")
- addv(7, "re-v-nevsimej")
- end
- end
- room.uvod = room.uvod - 1
- if dist(big, krab) <= 1 or dist(small, krab) <= 1 then
- room.pobliz = room.pobliz + 1
- else
- room.pobliz = 0
- end
- if math.mod(game_getCycles(), 3000) == 0 then
- room.rozhovor = 0
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_valec()
- return function()
- if valec.dir == dir_up then
- room.zvednout = 1
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_krab()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- krab.spi = 0
- krab.dopad = 10000
-
- return function()
- if krab:isTalking() then
- krab.spi = 1
- end
- if krab.spi == 0 then
- if krab.dir == dir_no then
- krab.afaze = 0
- else
- krab.spi = 1
- end
- elseif krab:isTalking() then
- krab.afaze = math.mod(game_getCycles(), 4) + 2
- elseif krab.dir == dir_down then
- krab.afaze = random(9) + 1
- else
- anim_table = {
- [99] = function()
- krab.spi = 0
- room.pobliz = -14 - random(50)
- if random(2) == 1 then
- room.ahojkrabe = 0
- end
- if random(2) == 1 then
- room.nesahat = 0
- end
- if random(2) == 1 then
- room.bud = 0
- end
- end,
- [20] = function()
- krab.afaze = 0
- end,
- [26] = function()
- krab.afaze = random(4) + 2
- end,
- default = function()
- krab.afaze = 1
- end,
- }
- anim_table[21] = anim_table[20]
- anim_table[22] = anim_table[20]
- anim_table[23] = anim_table[20]
- anim_table[24] = anim_table[20]
- anim_table[25] = anim_table[20]
- anim_table[27] = anim_table[26]
- anim_table[28] = anim_table[26]
-
- switch(math.mod(random(krab.spi), 100))(anim_table)
- end
- if krab.spi > 0 then
- krab.spi = krab.spi + 1
- end
- if krab.dir == dir_down then
- krab.dopad = 0
- else
- krab.dopad = krab.dopad + 1
- end
-
- krab:updateAnim()
- end
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_valec()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_krab()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-